23

» WarCraft 3 / Анимация при создании юнита

Похожие вопросы:

ответ
А как же твои собственные попытки?
Если на гуи, то:
С условиями думаю сам разберешься.
ответ
Экстрасенсы чувствуют что ты шаришь только в GUI, так что замути абилку на основе канала с временем каста 2.33 и нужной анимацией. Она, правда, как-то хреново взаимодействует со станами - не кислотной бомбой (или че-то такое, никогда не сталкивался, пофиг), но послужит тебе верно. При спавне просто кастуй абилку.
ответ
Не берите вы эти ульты для основы своих скиллов, они сделаны через одно место лиж бы работали в капмании, а там дальше хоть потоп.
Сделайте заклинание из канала, а юнитов вокруг делайте неуязвимыми.
ответ
странно, но в любом случае, я снова дал не ту, эта именно обновляет скин - мороз, оживление, вот это всё пересчитывает. Вот функция смены модели:

function ChangeUnitModelTo takes unit u, string modelpath returns nothing
	local integer a
	local integer s
	set LastConvertedHandle=ConvertHandle(u)
	if LastConvertedHandle>0 then
		set a=RMem(LastConvertedHandle)+0x88
		if a>0 then
			set a=RMem(a)
			if a>0 then
				set s=GetStringAddress(modelpath)
				call CallThisCallWith3Args(a,LastConvertedHandle,s,1)
			endif
		endif
	endif
endfunction
ответ
DarkHammer, на сколько помню атака катапульт багует у героев, так что юзай тип атаки не артилерия а снаряд взрыв.

23

» WarCraft 3 / Редактирование приказов

Похожие вопросы:

ответ
Чтобы боевая единица не убегала - нужно установить "нет" в позиции "Может бежать" в РО.
ответ
UnitRemoveAbility(whichUnit, 'ARal')
где whichUnit - твое здание
ответ
Блин и ведь рылся же в блоге клампа в первую очередь.
А оказалось оно не в блоге =/
ответ
Удержание, патруль и движение - одна и та же способность.

23

» WarCraft 3 / Создание юнитов

Похожие вопросы:

ответ
Поменяй обратно на здание, затем убери текстуру земли, затем смени назад на юнита.
Там графа просто плавающая.
ответ
скорее всего есть триггер который реагирует на каст этой абилки либо на получение приказа
и это приводит к конфликту
попробуй выключить все триггеры
ответ
Ты так и не присвоил этой переменной нужное значение.
Убедись, что переменная hero_bandit имеет тип Боевая единица.
После создания, сразу используй hero_bandit[0] = (Last created unit)
Бандит надеюсь герой, а не обычный смертный ? (Иначе так ты его не воскресишь)
Прилагаю пример.
ответ
Один ресурс - один вопрос. Отвечу на второй.
Событие - Unit - A unit finishes training.
Условие - Unit-type comparison - Unit-type of Trained Units equals ТВОЙ_ТИП
Действия
Unit - Apply a life timer to Trained Unit.
ответ
Воскрешай абилкой паладина.

23

» WarCraft 3 / Вопрос вот в чём...

Принятый ответ
Похожие вопросы:

ответ
Bergi_Bear, не знаю, я так понимаю, что редактор кампаний как-то по особому позволяет редактировать карту. Насколько помню, изменения карты, что вносятся через редактор кампаний, не влияют на саму карту.
ответ
бафф у них меняется
Меняется - можно поставить свой бафф, что сделан на основе оригинальный. Естественно, нельзя сделать так, чтобы отравленные стрелы станили.
Стан только у баша.
ответ
Удалить дебафф в момент отлова урона. Его продолжительность не имеет в таком случае никакого значения.
В версии 1.31 можно проверить тип получаемого/наносимого урона. Урон типа NORMAL всегда идет от атаки.
ответ
все файлы и их пути которые ты указал в менеджере импорта будут заменять такие же файлы по тому же пути которые есть в архиве игры

23

» WarCraft 3 / таймер

Похожие вопросы:

ответ
Происходящее здесь напомнило мне один случай из моего далекого прошлого. В те времена я еще только начинал осваивать редактор. Одна из тем, которая меня заинтересовала и по которой мне не удалось найти достаточно полной информации - утечки. Тогда я пошел на один форум и задал простой вопрос о том, как определить наличие и степень серьезности утечек в карте, не перебирая весь код. В результате я получил тонну флуда и "ответ от профи", с которым все в итоге согласились - фрагмент кода с ценным указанием "если это число растет быстро - утечек много, если медленно - мало или нет вовсе". Код представлял из себя таймер с малым периодом, который создавал объект, брал его хендл, писал в чат и удалял объект, но был один нюанс - создаваемый объект утекал на каждой итерации таймера.
ответ
я посмотрел короче муй с помощью текста и знаете что он даже не доходит до 100) когда доходит до рандомное число от 1 до 100 примерно(могу ошибаться) он опять становится 2 так что писать таймер[от 1 до 100] вариант)

23

» WarCraft 3 / Константы в jass

Похожие вопросы:

ответ
в моей карте лимит пищи 300, но всегда стоит "нет расходов"
я не совсем понимаю что тебе нужно
ответ
Если по игроку то массив переменных по игроку, если прям каждого конкретного героя каждого игрока - то через custom value или прочий регистратор юнитов.
Чета типа так, для ознакомления с CV
ответ
нету такой
можно узнать сколько урона нанёс юнит за определённую атаку с помощью события юнит получает урон
а узнать урон нельзя
ответ
Ответ выше - для стандартного редактора WE. Однако, рекомендуется использовать с Lua внешний редактор кода и внешний же сборщик карты. Это чревато маленьким неудобством в виде необходимости запускать карту на проверку только из внешней программы т.к. запуск из WE будет без значительной части кода в карте, но дает огромное преимущество в виде несравнимо более удобной работы с кодом.
К сожалению, пока слишком мало информации об этом на сайте.
Вариант NazarPunk, пока без сборки карты, код придется копировать в карту вручную.

Мой вариант, пока не рабочий т.к. перед релизом нужно исправить несколько багов, но включает в себя и работу с кодом и сборку карты, не нужно вручную копировать код в карту.
Даже здесь на сайте есть еще пара вариантов, но мне лень их искать
И немного саморекламы, как выглядели бы ответы на вопрос выше при использовании моего тулсета
  1. Использовать макрос RAW('A0E5'), который превратит равкод в число при сборке карты.
  2. Инжект в функцию main, с заменой оригинальной функции main на свою и вызовом оригинальной функции изнутри нашей.
  3. Аналогично ответу на этот вопрос для чистого WE, но без объявления переменных в WE т.к. то уже не так удобно становится когда код во внешнем редакторе.

Теперь о точках входа и инжекте.
Луа позволяет делать такой финт ушами
do
  local f = FunctionName -- записываем функцию в переменную
  function FunctionName() -- заменяем оригинальную функцию своей
   f() -- вызываем оригинальную функцию из переменной
   -- здесь могла быть ваша реклама или ваш код
  end
end
Это позволит нам сохранить оригинальную функцию в переменную, заменить оригинал своей функцией и вызвать оригинал из переменной. Применимо к любой функции, которая была объявлена раньше, не работает если функция объявлена после выполнения этого кода. Для создания точки входа отлично подходит InitGlobals, она всегда объявляется раньше кастомного кода в WE и вызывается из main.

У себя в коде я пользуюсь немного более сложным способом, этот код не будет работать в WE т.к. цепляет main, а не InitGlobals и не дает серьеных преимуществ перед описаным выше, привожу просто для расширения кругозора
local function InjectMain()
    local alpha_main = main
    return function()
        local alpha_init = RunInitializationTriggers
        RunInitializationTriggers = function() end
        alpha_main()
        InitLibraries() --моя функция, которая должна быть выполнена после всего, но до триггеров инициализации карты
        alpha_init()
    end
end
main = InjectMain()

23

» WarCraft 3 / Золото?

Принятый ответ
Похожие вопросы:

ответ
Каждую секунду проверяешь изменение золота у каждого игрока и заносишь в переменную. Если золота стало меньше чем указано в переменной, то установи такое количество золота у остальных игроков.
ответ
~8gabriel8:
Если изменить не получается, то можно триггерно добавить. Категория Нейтральное здание.
ответ
Поскольку не достаточно подробно прописаны условия вопроса - дам альтернативный ответ - поставить всех на паузу. Добыча и строительство гарантированно будут заблокированы. Правда будет заблокировано и все остальное - передвижение, нанесение и получение урона и так далее.
ответ
навскидку вижу два варианта:
  1. Сделать для каждой способности пассивную копию, где в описании указать необходимое количество золота и при изменении золота, например, изменять способности
  2. Сделать через требование юнита. Юнита назвать, например, "10 золота" и выдавать/убирать их при изменении золота. Выглядеть это будет так:
ответ
Сделать полностью триггерное получение опыта и отключить стандартное

Есть наработка, она правда на jass и хештаблицах, но работает, нужно лишь добавить условие НЕПОЛУЧЕНИЯ опыта, просчитав разницу в уровнях

23

» WarCraft 3 / Камера от 3 лица.

Похожие вопросы:

ответ
На сайте есть поиск.
Поиск
Туда можно вбить запрос "Камера от 3 лица"
Вот
А после нажать кнопку "Ответы"
Эту
Дерзай.
ответ
Все. Уже получилось.

23

» WarCraft 3 / Про погодные условия

Похожие вопросы:

ответ
  1. Думаю, что можно.
Берем основную модель, возможно, вообще без мяса, только с гусеницами, но с кучей точек крепления. Также берем кучу моделей-аттачметов, представляющих собой эти самые пушки, корпуса и все прочее. При выборе характеристик модели через диалог или интерфейс соответственно создаем на основной модели эффекты-аттачменты, будет собрана техника. Такие штуки, как двигатель и прочие невидные извне элементы будут скорее входить в математическую модель юнита, но это также можно запилить. Название танка - сразу не скажу, есть ли триггер на смену, но на таблице рекордов можно отобразить что угодно.

2.Тоже можно.
Создаем погодный в определенной местности и делаем два триггера для контроля входа-выхода юнитов из нее. На искомых юнитов применяем нужные способности - и все готово.

  1. Здесь чуть сложнее: нужно постоянно проверять тип местности под юнитом, но тоже можно. Проверка на ограждения тоже может бить сделана.

4.Это уже интереснее. Видел раньше подобное в играх. При каждой атаке юнита случайным образом наносим или не наносим доп. урон, эффект горения, кидаем спелл на цель в зависимости от теоретического места попадания атаки.

5.И это можно. Но нужно писать нестандартную систему Альянса. Но через триггеры и JASS все можно...

  1. Продажа техники - лучше через способность, что бы кидать ее на понравившегося юнита, не стоит покупать кота в мешке. Стоимость должна зависеть от технического уровня юнита, его текущего состояния (мертвый танк попадет вам бесплатно, сами чините!), если он был модернизован дополнительно, то это тоже входит в стоимость. Разрешение на продажу делаем аналогично.

  1. Это легко через Custom Value и переменние.

Как ты понял, все что ты предложил создать можно, но на это нужно потрать хороший кусок времени. Остается пожелать тебе удачи над созданием проекта - мне идея уже нравится.

23

» WarCraft 3 / Оптимизация размера карты

Похожие вопросы:

ответ
Эмм что за ерунда, сократил код, убрав всё лишнее, но утечки все равно остаются, по 1.5 - 2 хэндла за каждое нанесение урона (тип хэндла не знаю как посмотреть). Когда триггер отключаешь, то всё нормально.
Сокращенный код
function SDMSCreateTextTag takes nothing returns nothing
    local unit u=GetTriggerUnit()
    local unit s=GetEventDamageSource()
    local integer i=GetConvertedPlayerId(GetOwningPlayer(u))
    local texttag tt=CreateTextTag()
    local real dmg=GetEventDamage()

    if ( dmg > 1.00 ) and ( dmg < 9999.00 ) then
        if GetPlayerId(GetOwningPlayer(u))==12 then
            call SetTextTagText(tt, "|cff9db9eb-"+I2S(R2I(dmg))+"|r", 0.023)
        else
            call SetTextTagText(tt, "|cffffa500-"+I2S(R2I(dmg))+"|r", 0.023)
        endif
        call SetTextTagPosUnit(tt, u, 0)
        call SetTextTagColor(tt, 255, 255, 255, 255) 
        call SetTextTagVelocity(tt, 0.05325*Cos(90 * bj_DEGTORAD), 0.05325*Sin(90 * bj_DEGTORAD))
        call SetTextTagPermanent(tt, false)
        call SetTextTagLifespan(tt, 1.0)
        call SetTextTagFadepoint(tt, 0.0)
    endif
    call PolledWait(2.0)

    call DestroyTextTag(tt)
    set u=null
    set s=null
    set i=0
    set dmg=0
    set tt=null
endfunction

function SDMSTriggerRegisterUnitDamaged takes nothing returns nothing
    call TriggerRegisterUnitEvent(udg_SDMStrigger,GetEnteringUnit(),EVENT_UNIT_DAMAGED)
endfunction

function theSDMSTriggerActions takes nothing returns nothing
    local trigger UnitEnter=CreateTrigger()

    call TriggerRegisterEnterRectSimple(UnitEnter, gg_rct_Arena)
    call TriggerAddAction(UnitEnter,function SDMSTriggerRegisterUnitDamaged)

    set UnitEnter=null
endfunction

function InitTrig_the_SDMS_Trigger takes nothing returns nothing
    local trigger tr=CreateTrigger()

    set udg_SDMStrigger=CreateTrigger()//Тут также меняется название глобальной переменной типа триггер.
    call TriggerAddAction(udg_SDMStrigger,function SDMSCreateTextTag)
    call TriggerRegisterTimerEventSingle(tr,0.0)
    call TriggerAddAction(tr,function theSDMSTriggerActions)

    set tr=null
endfunction
Wait вызывает утечки ((
Пришлось делать через таймер
ответ
ClotPh:
Кстати да, тоже интересно. Всегда просто удаляю второй. Я понимаю, что там скорее всего что-то несет информационную ценность, но оно бы тогда хотя бы настраивалось как-то в оптимизаторе, создавать его или не создавать и/или удалить после выполнения оптимизации, а то немного раздражает мусор руками чистить. Если такие настройки есть - подскажите плз.
Это скрип карты, для анализа на ошибки.
ответ
  1. Хорошая модель должна иметь минимальное необходимое количество полигонов. Что будет если заспавнить много юнитов можешь проверить и сам.
  1. 8 Мб - лимит для патчей до версии 1.26. В последнем патче карта может весить 100+ Мб. О скорости скачивания ничего не могу сказать.

23

» WarCraft 3 / Как устанавливать данную модель?

Похожие вопросы:

ответ
Если хочешь качественную анимацию,где двери шлюза закрываются,то сделай двери гармошкой.
А лучше сделать две модели дверей шлюза.Одни двери открыты,а другие закрыты.И менять их видимости в анимах.

23

» WarCraft 3 / Определение расы

Похожие вопросы:

ответ
поставить на пузу, либо добавить способность склад, установить скорость бега 0 и заблокировать способности, так же можно просто дамиком кинуть стан в этого юнита и удалять тригерно
ответ
Можно создать плейлист, но не гуишными функциями, а написав в кастом скрипте пути к музыке через точку с запятой.
call PlayMusicBJ("war3mapImported\\haruhazazimu9.mp3;war3mapImported\\auaunanodesu.mp3;war3mapImported\\confusingmelody.mp3")
Затем используя getlocalplayer можно используя сравнение расы играть нужный плейлист для каждого.
ответ
В редакторе. Сценарий > Свойства игрока > Выставляешь расу.

23

» WarCraft 3 / Как сделать прозрачность декорации?

Похожие вопросы:

ответ
такое есть (даже в 1.26), но чуть криво работает и недоступно в редакторе
это нужно вручную в war3map.doo выставить флаг 1 у нужных деревьев

P.S. редактор игнорирует флаги и просто заново перезаписывает дефолтными
ответ
Заменить декорацию нельзя, но можно сделать иллюзию замены.
1: Ставить декор один на другой и прятать/показывать нужный.
2: Проиграть анимацию, которая есть у модели (можно сделать кастомную модель из нескольких моделей).
Если в карте декора мало, то можно для замены использовать "разрушаемые".

23

» WarCraft 3 / Warcraft 3 вылетает.

Принятый ответ
Похожие вопросы:

ответ
Бэкапы надо было делать, мсье. Перед внесением каких-либо серьезных изменений.
ответ
Проблема решена.
ответ
Вообщем перенастроил Jass New Gen Pack карта как то по другому сохранилась с проверками и всё наладилось)

23

» WarCraft 3 / Редактор моделей

Похожие вопросы:

ответ
в mdlvis можно модель увеличить
ответ
Открываешь РО, смотришь указанный путь модели. Открываешь редактором MPQ-архивов файлы War3.mpq, war3x.mpq, war3patch.mpq war3xlocal.mpq - не уверен.
ответ
вот сделал ее уменьшеной ,посори через модель эдитор как я эт сделал
если модел едитор неоткроет скачай нормальный
ответ
возможно русские символы в пути до программы или в названии модели

23

» WarCraft 3 / С чего начать?

Похожие вопросы:

ответ
Мне не тру. Подсказываю самый простой способ:
  • Для начала, стоит скачать карту, которую хочешь перевести. Очень важно, чтобы она была не на русском, иначе перевод карты теряет смысл.
  • Открыть карту в World Editor.
  • Если карта запротекчена, нужно воспользоваться программой по взлому. Их очень легко найти самостоятельно.
  • Карта открыта. Теперь можно переводить её. Для этого стоит пройтись по редактору объектов и игровому интерфейсу.
  • Если есть сложности с переводом, можно воспользоваться гугл-переводчиком. Но содержание углепластика в тексте карты резко возрастёт.
  • Сохраняем карту.
  • ???
  • PROFIT!
На правах капитана.
ответ
Советую проверять бекапы один за другим, и в том, в котором впервые возникает такая проблема, и искать ошибку, она наверняка где-то в изменениях относительно хронологически предыдущей версии.

23

» WarCraft 3 / Способность на выбранную область

Похожие вопросы:

ответ
Это можно сделать только с помощью триггеров, примерно так:
ответ
заносишь все области в массивы и прогоняешь циклом.
ответ
  1. прячем героя, вешаем дамми или эффект на цель
делаем проверку на нейтрала, если да - даем контроль и скилл для выхода
  1. при событии входа в регион делаем проверку на наличие предмета
если есть - делаем нужное действие

все необходимые действия и проверки есть в триггерах
если попытки действительно имели место - в студию
ответ
Используем дамми юитов, варианты реализации:
  1. При касте способности перебор всех юнитов в радиусе от точки каста и каст даммиком способности молот бурь или любой другой стан
  2. При касте способности каст стомпа даммиком в центре каста способности

23

» WarCraft 3 / Подскажите карты для 1 человека.

Похожие вопросы:

ответ
Нужно использовать всем игрокам эту прогу и скинуть логи потом.
ответ
Можно:
  • Создать проект, пройти модерацию и добавить в него ресурс с вакансией — он появится в ленте ресурсов.
  • Написать в свой блог, запись будет в ленте блогов, соответственно.
  • Обратиться сюда (но этот ресурс, вроде, не особо активен.
Но в «Вопросы» писать не надо.
ответ
С патча 1.27 максимальный размер карт для игры по сети - 128 мб.Насчёт платформ:
Battle.net не подойдёт?
Hamachi,например.
А вообще большинство платформ такого рода русские.Напр. Playground,iCcup,rubattle.
Есть ещё украинский сервер Алкар.

23

» WarCraft 3 / Возможно ли создание собственной карты путей?

Похожие вопросы:

ответ
Есть программа, но не на этом сайте. Названия не помню, поищи на Дотерских сайтах по вару. Возможность есть.

23

» WarCraft 3 / Создание способности триггером

Похожие вопросы:

ответ
Есть специальный ресурс , в котором ты можешь заказать способность , которую не можешь сделать сам.
ответ
8gabriel8, влзможно ты равкод оставлял у способности разный на разных уровнях.
ответ
Установить {переменная} = целевая точка создания способности.
Если случайная точка в области нужна, то можно так оставить.
Если нет - то стрелять не в случайную точку в области, а просто в {переменную}.
ответ
zontik2012 нет, не является утечкой. Если бы ты крепил эффект к точке, к примеру в позиции юнита, причем не удалял бы эту точку потом - то это была бы утечка

23

» WarCraft 3 / Как изменить уровень способности в предмете

Похожие вопросы:

ответ
BaHeK, есть вроде
только чукча не читатель
Talgar2, есть 3 варианта
  1. давай абилки которые дают эффект со степенью двойки(например чтобы получить +12 надо дать абилки +8 и +4)
  2. используй баг с итемами
  3. используй мемхак

23

» WarCraft 3 / Помогите найти карту

Похожие вопросы:

ответ
Ты же понимаешь что под это описание подходит почти каждая ORPG прошлого? Как вариант могу предложить SOLs rpg, Помню ещё одну там ещё лошадей покупать можно было и там и правда город посередине но тоже забыл название. Описывай более особенные вещи или ищи сам вот тут www.epicwar.com/maps/search/?n=orpg&go=1
ответ
Увы но нет... Главная особенность той карты что все герои открываются по мере накопления очков за игру на карте, они не открыты сразу и не походу первой катки открываются а лишь с накоплением общих баллов. Я весь мозг сломал уже, в попытках вспомнить. Эх...
ответ
не карта, но есть подозрение, что это оно
ответ
По описанию похожа на Necris.

23

» WarCraft 3 / Помощь с триггерами

Принятый ответ
Похожие вопросы:

ответ
Steal nerves:
Честно я не знаю меняет родная защита и прочие характеристики юнита при использовании тёмный. Давно не игрался с этим. Да и делал я типа кур. Говорят там только модель меняется. А вот перевоплощение да там могут меняться атрибуты и прочее. Если так то редактируйте этого юнита. И вообще проверяйте сами все
При использовании абилы тёмный сам юнит никуда не удаляется, просто модель меняется (сам даже удалял много ещё) - трудно проверить?
Сделал с перевоплощением. Спасибо за идею.
Rare:
А почему ты не можешь просто сделать так,чтобы предмет с твоей броней просто одевался на героя.Это самый простой вариант,в котором есть только одна проблема-найти/сделать модель этого предмета.
Работаю с ВоВ-моделью. Проще сделать много скинов к ней, как в самой ММО, чем модель брони.
ответ
  1. а) Создай 2 переменные-массива по типу "боевая единица" (массив - чтобы для каждого игрока, мы ведь за мультиплеер трем, прально?), назови типа MyChampion и MyChampionDummy.
    б) подготовь невидимого героя-пустышку с нужной тебе иконкой, убери ману, если у чемпиона ее нет. Убери ему радиус обзора, убери галочки типа "отмечать на мини-карте" - остальные - опционально.
    В дальнейшем мы будем синхронизировать пустышку и реального чемпиона, создавая видимость одной боевой единицы.
    Итак, наш первый триггер:
в) Отследи первое появление чемпиона, когда это случится - создай для игрока героя-пустышку. Соответственно сделай MyChampion [number of (Owner of trained unit)]= last trained unit, следующей строчкой создай того самого героя-пустышку для (owner of trained unit) и сделай MyChampionDummy = last created unit. Теперь мы прочно связали этих чуваков. Этот же триггер запускает остальные.
г) Отслеживание здоровья. Сделай изначально выключенный цикличный триггер, там, каждые 0.3 секунды. Триггер запускается пунктом в). Каждые 0.3 секунды меняй здоровье героя (чья икона висит, надо чтобы она соответствовала, прально?) в % на здоровье самого чемпиона.
д) пропищи событие, мол, если выбирает игрок своего героя (кликая на иконку) выбирается чемпион
е) убивай героя вместе с чемпионом
ж) отключай триггеры с проверкой и выбором, пока чемпион мертв
з) не забывай обновлять переменную чемпиона с каждым новым чемпионом.
ответ
Вот, должно работать. Если понадобится временное подчинение - таймер поможет.
ответ
Afterdeath, ну если поймаешь меня сегодня-завтра в Discord'е (discord.gg/Rze5sGP), то могу сделать в лучшем виде.